<?php

//Yii::import('llamadas.models._base.BaseReporte');
//class LlamadaReporte extends BaseReporte {
class EventoReporte extends CFormModel {

//Atributos
    public $evento;

//   public static $tiposLlamadas = array(
//       'Recibida','Atendida','Abandonada'
//   );

    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public function rules() {
        return array(
            array('evento', 'required'), //pendiente
        );
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
        return array(
            'evento' => Yii::t('app', 'Evento'),
        );
    }

    public function generatePieReport($evento) {
        die('dei');
        $inicio = DateTime::createFromFormat('d/m/Y', $inicio);
        $fin = DateTime::createFromFormat('d/m/Y', $fin)->modify('+1 day');
        $report = array();
        $report['title']['text'] = $motivo_id ? 'Submotivos' : 'Motivos';
        $report['credits']['enabled'] = false;
        $report['chart']['height'] = '280';
        $report['plotOptions'] = array(
            'pie' => array(
                'allowPointSelect' => true,
                'cursor' => 'pointer',
                'dataLabels' => array(
                    'enabled' => false,
                    'format' => '<b>{point.name}</b>: {point.percentage:.1f} %'
                ),
                'showInLegend' => true,
                'tooltip' => array(
                    'pointFormat' => '{series.name}: <b>{point.percentage:.1f}%</b>'
                ),
            )
        );
        $report['series'] = array();
        $consulta = Yii::app()->db->createCommand()
                ->select($motivo_id ? 'mot.id, sub.nombre, count(lla.id) as count' : 'mot.id, mot.nombre, count(lla.id) as count')
                ->from('llamada lla')
                ->join('llamada_submotivo sub', 'sub.id = lla.submotivo_id')
                ->join('llamada_motivo mot', 'mot.id = sub.motivo_id');
        if ($motivo_id) {
            $consulta->where('mot.estado=:estado and lla.tipo=:tipo and mot.id=:motivo_id and lla.fecha_creacion between :inicio and :fin', array(':estado' => 'ACTIVO', ':tipo' => 'ENTRANTE', ':motivo_id' => $motivo_id, ':inicio' => $inicio->format('Y-m-d'), ':fin' => $fin->format('Y-m-d')))
                    ->group('sub.id')
                    ->order('sub.nombre');
        } else {
            $consulta->where('mot.estado=:estado and lla.tipo=:tipo and lla.fecha_creacion between :inicio and :fin', array(':estado' => 'ACTIVO', ':tipo' => 'ENTRANTE', ':inicio' => $inicio->format('Y-m-d'), ':fin' => $fin->format('Y-m-d')))
                    ->group('mot.id')
                    ->order('mot.nombre')
            ;
        }
        $options = $consulta->queryAll();
        $series = array(
            'type' => 'pie',
            'name' => 'Cantidad',
            'data' => array()
        );
        foreach ($options as $option) {
            $series['data'][] = array($option['nombre'], (int) $option['count'], $option['id']);
        }
        $report['series'][] = $series;
        return $report;
    }

    public function generateColumnReport($evento) {
//        $inicio = DateTime::createFromFormat('d/m/Y', $inicio)->setTime(0, 0, 0);
//        $fin = DateTime::createFromFormat('d/m/Y', $fin)->setTime(0, 0, 0);
//        $interval = DateInterval::createFromDateString('1 day');
//        $period = new DatePeriod($inicio, $interval, $fin); //frecuencia del intervalo a calcular
        $dias = 0;
        $report = array();
        $report['title']['text'] = 'Eventos Académicos';
        $report['credits']['enabled'] = false;
        $report['chart']['height'] = '320';
        $report['subtitle']['text'] = 'PUCE-SI';
        $report['xAxis']['labels'] = array("rotation" => 0);
        $report['yAxis']['min'] = 0;
        $report['yAxis']['title']['text'] = "Número de Inscritos";
        $report['yAxis']['allowDecimals'] = false;
        $report['xAxis']['categories'] = array();
        $report['series'] = array();

//        if ($motivo_id) {
//            $motivos = LlamadaSubmotivo::model()->activos()->findAll('motivo_id = :motivo_id', array(':motivo_id' => $motivo_id));
//        } else {
//            $motivos = LlamadaMotivo::model()->entrantes()->activos()->findall();
//        }

        $estados = array('INSCRITOS', 'CONFIRMADOS', 'APROBADOS');
//                $grupos = ClienteGrupo::model()->findAll(array('condition' => ('estado=:estado'), 'params' => array(':estado' => ClienteGrupo::ESTADO_ACTIVO)));

        $inscritos = count(Inscripcion::model()->findAll(array('condition' => 'evento_id=:evento_id', 'params' => array('evento_id' => $evento))));
        $confirmados = count(Inscripcion::model()->findAll(array('condition' => 'evento_id=:evento_id AND confirmacion=:confirmacion', 'params' => array('evento_id' => $evento, ':confirmacion' => 1))));
        $aprobados = count(Inscripcion::model()->findAll(array('condition' => 'evento_id=:evento_id AND confirmacion=:confirmacion AND aprobado=:aprobado', 'params' => array('evento_id' => $evento, ':confirmacion' => 1, ':aprobado' => 'SI'))));
//        $inscritos=  Inscripcion::model()->findAll(array('condition'=>'estado','params'=>array('sdf'=>'sdfsf')));
//                foreach ($motivos as $motivo) {
        $data = array();
//                    foreach ($period as $date) {
//                        $inicio = $date->format('Y-m-d H:i:s');
        // inscritos 
        $categoria = 'PARTICIPANTES';
        if ($inscritos) {
            $report['xAxis']['categories'][] = $categoria;
            array_push($data, array((int) $inscritos));

            array_push($report['series'], array('name' => 'INSCRITOS', 'data' => array((int) $inscritos), 'type' => 'column'));
        }
        // confirmados 
        if ($confirmados) {
//                        $categoria = 'CONFIRMADOS';
            $report['xAxis']['categories'][] = $categoria;
            array_push($data, array($confirmados));

            array_push($report['series'], array('name' => 'CONFIRMADOS', 'data' => array((int) $confirmados), 'type' => 'column'));
        }
        // aprobados 
//                        $categoria = 'APROBADOS';
        if ($aprobados) {
            $report['xAxis']['categories'][] = $categoria;
            array_push($data, array($aprobados));

            array_push($report['series'], array('name' => 'APROBADOS', 'data' => array((int) $aprobados), 'type' => 'column'));
        }
//        var_dump($report);

        return $report;
    }

    private function consulta($evento) {
        $data = array();

        $consulta = Yii::app()->db->createCommand()
                ->select($motivo_id ? 'sub.nombre, count(lla.id) as count' : 'mot.nombre, count(lla.id) as count')
                ->from('llamada lla')
                ->join('llamada_submotivo sub', 'sub.id = lla.submotivo_id')
                ->join('llamada_motivo mot', 'mot.id = sub.motivo_id');
        if ($motivo_id) {
            $consulta->where('sub.estado=:estado and lla.submotivo_id = :motivo and lla.tipo=:tipo and lla.fecha_creacion between :inicio and :fin', array(':estado' => 'ACTIVO', ':motivo' => $motivo->id, ':tipo' => 'ENTRANTE', ':inicio' => $inicio, ':fin' => $fin))
                    ->group('sub.id')
                    ->order('mot.nombre');
        } else {
            $consulta->where('mot.estado=:estado and mot.id = :motivo and lla.tipo=:tipo and lla.fecha_creacion between :inicio and :fin', array(':estado' => 'ACTIVO', ':motivo' => $motivo->id, ':tipo' => 'ENTRANTE', ':inicio' => $inicio, ':fin' => $fin))
                    ->group('mot.id')
                    ->order('mot.nombre');
        }
        $options = $consulta->queryAll();

        if (!empty($options)) {
            $data[] = (int) $options['0']['count'];
        } else {
            $data[] = (int) '0';
        }

        return $data;
    }

}
